<!-- 我的弹窗 -->

<template>
  <WebModal mini @close="toRej">
    <WebForm>
      <FormSelect label="话筒列表" bind="microphoneId" :dict="iot_selectDict" tip="请选择话筒" required />
    </WebForm>

    <template #footer>
      <BtnDanger v-if="one.taskId" :title="MAP.tipRej" @click="toRej" />
      <BtnPrimary v-else :title="MAP.tipPass" @click="toPass" />
    </template>
  </WebModal>
</template>

<script>
// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'

// ============================== 导出组件 ============================== //

export default {
  /**
   * 名称定义 (实际使用名称)
   */
  name: 'MyModal',

  /**
   * 混入列表 (配置选项合并)
   */
  mixins: [CORE.mixWeb(), CORE.mixSelect('iot', 'iot_'), CORE.mixLoop(1)],

  /**
   * 组件导入 (Abc.vue + Abc/index.vue)
   */
  ...CORE.components(require.context('./', true, /vue$/)),

  /**
   * 监听属性 (深度 deep 首次 immediate)
   */
  watch: {
    /**
     * 监听对讲就绪
     */
    readyPass(ready) {
      ready && this.toRecord()
    },

    /**
     * 监听取消对讲
     */
    readyRej(ready) {
      ready && this.toRecord()
    },

    /**
     * 监听单项改变
     */
    one(one, old) {
      if (this.MAP.coreSecond && one.id === old.id && one.status !== old.status) this.toClear()
    },
  },

  /**
   * 本地方法 (轻量重要在前)
   */
  methods: {
    /**
     * 点击开始
     */
    async toPass() {
      await this.refForm.check()
      this.startPass()
    },

    /**
     * 点击停止
     */
    toRej() {
      if (this.one.taskId) this.startRej()
    },

    /**
     * 按秒循环 (可覆盖)
     */
    toLoop() {
      const { coreSecond } = this.MAP
      if (coreSecond) {
        if (CORE.TIME.second - coreSecond > 10) this.toClear()
        else this.startOne()
      }
    },

    /**
     * 开始记录
     */
    toRecord() {
      CORE.loading()
      this.MAP.coreSecond = CORE.TIME.second
    },

    /**
     * 清除记录
     */
    toClear() {
      CORE.unloading()
      this.MAP.coreSecond = 0
    },
  },
}
</script>
